package ArrayListPlus;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class CollectionCode {
    public static void main(String[] args) {
////        Collection 所有集合的父接口 不能实例化
//        Collection<String> collection = new ArrayList();
//        collection.add("a");
//        collection.add("b");
//        collection.add("c");
////        collection.clear();
//
////        不能通过索引 只能通过元素的对象进行删除
////        collection.remove("a");// 删除成功true 否则是false
//        System.out.println(collection);
//
//      boolean bool = collection.contains("a");
//        System.out.println(bool);

//        Collection collection = new ArrayList();
//        Student s1 = new Student("张一", 21);
//        Student s2 = new Student("张二", 22);
//        Student s3 = new Student("张三", 23);
//        collection.add(s1);
//        collection.add(s2);
//        collection.add(s3);
//        Student s4 = new Student("张三", 23);
////contains底层的方法还是调用当前类的equals方法
////所以equals方法需要重写 不然比较结果还是false
//        System.out.println(collection.contains(s4));


//        contains遍历方式

//        Collection<Integer> collection = new ArrayList();
//        collection.add(1);
//        collection.add(2);
//        collection.add(3);
//        collection.add(4);
//        collection.add(5);
////        迭代器遍历
//        Iterator iterator = collection.iterator();
//        while (iterator.hasNext()){
//            Object obj = iterator.next();
//            System.out.println(obj);
//        }
        /**
         * 1.循环结束后 迭代器指向最后一个元素 不能再次调用next方法 不然会报错 指针不会复位
         *   要再次便利 只能重新获取迭代器
         * 2.循环中只能调用一次next方法 否则会报错
         * 3.在迭代器遍历时 不能用集合的方法对集合进行操作 否则会报错
         * */


        /**
         * 增强for遍历
         * 1.增强for的底层就是迭代器
         * 2.所有单列集合和数组才能用增强for遍历
         *
         * */

//        Collection<String> collection = new ArrayList<>();
//        collection.add("zhangsan");
//        collection.add("lisi");
//        collection.add("wangwu");
//        for(String i:collection){
////            i是个第三方变量 跟collection中的元素没有关系 修改i 不会影响collection中的元素
////            只是遍历collection中的元素 用i来接收
//            i="q";
//        }
//        System.out.println(collection);


        /**
         * forEach循环
         * 1.forEach循环 是个增强for的升级版本
         * 2.只能遍历集合 不能遍历数组
         * */
//        Collection<String> collection = new ArrayList<>();
//        collection.add("zhangsan");
//        collection.add("lisi");
//        collection.add("wangwu");
//        collection.forEach(i -> i = "111");
//        System.out.println(collection);
    }
}
